package com.system.healthproject.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.Map;

public class JwtUtil {
    private static String SECRET="shiroDemo";


    public static String createTimeToken(Map<String,Object> map) {    //根据产生时间
        map.put("time",new Date().getTime());
        String jwt = Jwts.builder()
                .setClaims(map)
                .signWith(SignatureAlgorithm.HS512, SECRET)
                .compact();
        return jwt;
    }
    public static Map<String,Object> validateToken(String token) {
        if (token != null) {
            // 解析token
            try {
                Map<String, Object> body = Jwts.parser()      //根据Token解析出来时间 和 用户名
                        .setSigningKey(SECRET)
                        .parseClaimsJws(token)
                        .getBody();
                return body;
            }catch (SignatureException | MalformedJwtException | ExpiredJwtException e) {
                // TODO: handle exception
                // don't trust the JWT!
                // jwt 解析错误
                return null;
            } // jwt 已经过期，在设置jwt的时候如果设置了过期时间，这里会自动判断jwt是否已经过期，如果过期则会抛出这个异常，我们可以抓住这个异常并作相关处理。
        }else {
            return null;
        }
    }
}
